package com.xiaolun.other;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class Demo03 {
	public static void main(String[] args) {
		//得到文件信息
//		getInfo1();
//		getInfo2();
		//使用递归的形式，实现路径的列出
		String separator = File.separator;
		File file = new File("D:" + separator + "test");
		listDir(file);
	}

	public static void listDir(File file) {
		if (file.isDirectory()) { //当前路径是一个目录
			File[] result = file.listFiles(); //列出目录中的组成
			//确定已经列出来的内容（拒绝访问的文件此时不会列出）
			if (result != null) {
				for (int i = 0; i < result.length; i++) {
					listDir(result[i]);
				}
			}
		}
		System.out.println(file);
	}

	private static void getInfo2() {
		String separator = File.separator;
		File file = new File("D:" + separator + "test");
		/**
		 * 数组打印输出
		 * 1、list()此时只是列出来当前路径下所有子路径的信息，子路径
		 * 可能是一个文件或者是一个目录，不存在父路径
		 * [directory1, directory2, test3.txt, 阳光.jpg]
		 * 2、listFiles() 一个目录下还可能包含若干级的子目录
		 * 既然要想全部列出，使用listFiles()更加方方便。
		 *[D:\test\directory1, D:\test\directory2, D:\test\test3.txt, D:\test\阳光.jpg]
		 */
		System.out.println(Arrays.toString(file.list()));
		System.out.println(Arrays.toString(file.listFiles()));
	}

	private static void getInfo1() {
		String separator = File.separator;
		File file = new File("D:" + separator + "test" + separator + "阳光.jpg");
		System.out.println(file.isDirectory()); //false
		System.out.println(file.isFile()); //true
		System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
		//0.14MB
		System.out.println(String.format("文件大小：%5.2f", file.length() / (double) 1024 / 1024));
	}
}
